/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vista.personas.pacientes;

import prolog.GestorPrologPaciente;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import modelo.GestorModelo;
import modelo.patologias.Enfermedad;
import modelo.personas.pacientes.DetalleHistoriaClinica;
import modelo.personas.pacientes.GestorConsulta;
import modelo.personas.pacientes.GestorPaciente;
import util.GestorComponenteVista;
import vista.GestorVistaEditor;
import vista.patologias.EnfermedadesTreeModelo;

/**
 *
 * @author raul
 */
public class GestorVistaConsultaDlg extends GestorVistaEditor {
    
    private ConsultaDlg formulario;
    private GestorConsulta gestorModelo = new GestorConsulta();

    public GestorVistaConsultaDlg(GestorPaciente gestorPaciente) {
        this.gestorModelo.setGestorPaciente(gestorPaciente);
        this.gestorModelo.crearModelo();
        super.setModo(CREACION);
    }
    
    public GestorVistaConsultaDlg(GestorPaciente gestorPaciente, Object modelo) {
        this.gestorModelo.setGestorPaciente(gestorPaciente);
        this.gestorModelo.setModelo((DetalleHistoriaClinica) modelo);
        super.setModo(MODIFICACION);
    }
    
    @Override
    public String getNombreObjeto() {
        return "La consulta";
    }

    @Override
    public void cerrarFormulario() {
        getFormulario().dispose();
    }

    @Override
    public void abrirFormulario() {
        this.setFormulario(new ConsultaDlg(this));
        this.inicializarVista();
        formulario.setVisible(true);
    }

    @Override
    public ConsultaDlg getFormulario() {
        return formulario;
    }
    
    public void setFormulario(ConsultaDlg formulario) {
        this.formulario = formulario;
    }

    @Override
    public GestorModelo getGestorModelo() {
        return gestorModelo;
    }

    @Override
    public void inicializarVista() {
        getFormulario().cargarComboProfesionales(gestorModelo.listarProfesionales());
        getFormulario().crearModeloArbol(new EnfermedadesTreeModelo());
        if (!super.isCreacion()) {
            setearVistaConModelo();
        }
    }

    @Override
    public void setearModeloConVista() {
        DetalleHistoriaClinica dHC = gestorModelo.getModelo();
        dHC.setFechaDiagnostico((Date) getFormulario().getFechaDiagnosticoTxt().getValue());
        gestorModelo.setProfesional(getFormulario().getProfesionalCmb().getSelectedItem());
        dHC.setPadecimiento(getFormulario().getPadecimientoTxt().getText());
        gestorModelo.agregarSintomas(
                GestorComponenteVista.getObjetosEnLista(formulario.getSintomasLst()));
        dHC.setTensionArterial(getFormulario().getTensionArterialTxt().getText());
        dHC.setFrecuenciaCardiaca(getFormulario().getFrecuenciaCardiacaTxt().getValue());
        dHC.setPulso(getFormulario().getPulsoTxt().getValue());
        dHC.setFrecuenciaRespiratoria(getFormulario().getFrecuenciaRespiratoriaTxt().getValue());
        dHC.setTemperatura(getFormulario().getTemperaturaTxt().getValue());
        dHC.setPeso((Double) getFormulario().getPesoTxt().getValue());
        dHC.setAltura((Double) getFormulario().getAlturaTxt().getValue());
        dHC.setPesoIdeal((Double) getFormulario().getPesoIdealTxt().getValue());
        dHC.setInspeccionGeneral(getFormulario().getInspeccionGeneralTxt().getText());
        gestorModelo.setEnfermedad(getFormulario().getEnfermedadTxt().getValue());
        dHC.setPlan(getFormulario().getPlanTxt().getText());
    }

    @Override
    public void setearVistaConModelo() {
        DetalleHistoriaClinica dHC = gestorModelo.getModelo();
        getFormulario().getFechaDiagnosticoTxt().setValue(dHC.getFechaDiagnostico());
        getFormulario().getProfesionalCmb().setSelectedItem(dHC.getProfesional());
        getFormulario().getPadecimientoTxt().setText(dHC.getPadecimiento());
        getFormulario().cargarListaSintomas(dHC.getSintomas());
        getFormulario().getTensionArterialTxt().setText(dHC.getTensionArterial());
        getFormulario().getFrecuenciaCardiacaTxt().setValue(dHC.getFrecuenciaCardiaca());
        getFormulario().getPulsoTxt().setValue(dHC.getPulso());
        getFormulario().getFrecuenciaRespiratoriaTxt().setValue(dHC.getFrecuenciaRespiratoria());
        getFormulario().getTemperaturaTxt().setValue(dHC.getTemperatura());
        getFormulario().getPesoTxt().setValue(dHC.getPeso());
        getFormulario().getAlturaTxt().setValue(dHC.getAltura());
        getFormulario().getPesoIdealTxt().setValue(dHC.getPesoIdeal());
        getFormulario().getInspeccionGeneralTxt().setText(dHC.getInspeccionGeneral());
        getFormulario().getEnfermedadTxt().setValue(dHC.getEnfermedad());
        getFormulario().getPlanTxt().setText(dHC.getPlan());
    }

    void buscarEnfermedad(String enfermedad) {
        getFormulario().crearModeloArbol(new EnfermedadesTreeModelo());
        cargarArbol(gestorModelo.buscarEnfermedad(enfermedad));
    }

    void consultarEnfermedadesProbables() {
        getFormulario().crearModeloArbol(new EnfermedadesTreeModelo());
        GestorPrologPaciente gpp = new GestorPrologPaciente();
        gpp.consultarEnfermedadesProbables(gestorModelo.getPaciente());
        cargarArbol(gestorModelo.buscarEnfermedadesPorId(gpp.getResultados()));
    }
    
    public void cargarArbol(java.util.Collection datos) {
        Iterator<Enfermedad> i = datos.iterator();
        while (i.hasNext()){
            Enfermedad e = i.next();
            getFormulario().agregarNodoArbol(e.getTipoEnfermedad(), e);
        }
    }

    void agregarSintomas(List objetosEnLista) {
        List sintomas = gestorModelo.listarSintomas();
        sintomas.removeAll(objetosEnLista);
        getFormulario().cargarCheckListSintomas(sintomas);
    }
    
}
